package com.xlh.virtualization.service;

import com.xlh.virtualization.domain.ContainerContext;
import com.xlh.virtualization.domain.ExperimentContainer;
import com.xlh.virtualization.domain.ExperimentContext;
import com.xlh.virtualization.vo.ExperimentContainerStudentVO;

import java.util.List;

/**
 * @author cheer
 */
public interface ExperimentService {

    /**
     * 判断除指定实验外是否还有其它正在进行的课程与实训
     *
     * @return 如果有其它进行的实验则返回true，否则返回false
     */
    Boolean isOtherExperimentRunning(ContainerContext containerContext);

    /**
     * 停止除指定实验外其他正在进行的课程与实训
     */
    void stopOtherExperiment(ContainerContext containerContext);

    /**
     * 获取实验容器信息
     *
     * @return 容器信息
     */
    List<ExperimentContainer> getExperiment(ContainerContext containerContext, ExperimentContext experimentContext,
                                            String volumePath);

    /**
     * 查询学生的实验容器信息
     */
    List<ExperimentContainerStudentVO> getStudentExperiment(ContainerContext containerContext);

    /**
     * 实验页面是否打开
     *
     * @param userId      用户Id
     * @param contextType 场景类型
     * @param contextId   场景Id
     * @return 如果打开返回true，否则返回false
     */
    Boolean isExperimentPageOpen(Long userId, Integer contextType, Long contextId);
}
